{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Visualization of Learning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# high-dimensional reacher\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def smooth(y, radius=2, mode='two_sided'):\n",
    "    if len(y) < 2*radius+1:\n",
    "        return np.ones_like(y) * y.mean()\n",
    "    elif mode == 'two_sided':\n",
    "        convkernel = np.ones(2 * radius+1)\n",
    "        return np.convolve(y, convkernel, mode='same') / \\\n",
    "               np.convolve(np.ones_like(y), convkernel, mode='same')\n",
    "    elif mode == 'causal':\n",
    "        convkernel = np.ones(radius)\n",
    "        out = np.convolve(y, convkernel,mode='full') / \\\n",
    "              np.convolve(np.ones_like(y), convkernel, mode='full')\n",
    "        return out[:-radius+1]\n",
    "\n",
    "\n",
    "def plot(x, data, color, label):\n",
    "    y_m=np.mean(data, axis=0)\n",
    "    y_std=np.std(data, axis=0)\n",
    "    y_upper=y_m+y_std\n",
    "    y_lower=y_m-y_std\n",
    "    plt.fill_between(\n",
    "    x, list(y_lower), list(y_upper), interpolate=True, facecolor=color, linewidth=0.0, alpha=0.3\n",
    ")\n",
    "    plt.plot(x, list(y_m), color=color, label=label)\n",
    "    \n",
    "plt.figure(figsize=(8,6))\n",
    "file_pre = './'\n",
    "y=np.load(file_pre+'rewards_lstm.npy')\n",
    "y_=np.load(file_pre+'rewards.npy')\n",
    "\n",
    "x=np.arange(len(y))\n",
    "episode_length = 150\n",
    "plt.plot(x, smooth(y), label = 'SAC_LSTM', color='b')\n",
    "plt.plot(x, smooth(y_), label = 'SAC', color='r')\n",
    "\n",
    "plt.xlabel('Episodes')\n",
    "plt.ylabel('Reward')\n",
    "# plt.ylim(0)\n",
    "leg= plt.legend( loc=2)\n",
    "plt.grid()\n",
    "plt.savefig('reward_compare.pdf')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.15"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
